
package se.sll.service.catalogue.offers.api.model;

import java.util.HashMap;
import java.util.Map;
import javax.annotation.Generated;
import javax.validation.constraints.NotNull;
import org.codehaus.jackson.annotate.JsonAnyGetter;
import org.codehaus.jackson.annotate.JsonAnySetter;
import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.annotate.JsonPropertyOrder;
import org.codehaus.jackson.map.annotate.JsonSerialize;


/**
 * CVType
 * <p>
 * A generic CV Type
 * 
 */
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
@Generated("org.jsonschema2pojo")
@JsonPropertyOrder({
    "code",
    "codeSystem",
    "codeSystemName",
    "codeSystemVersion",
    "displayName",
    "originalText"
})
public class Type {

    /**
     * 
     * (Required)
     * 
     */
    @JsonProperty("code")
    @NotNull
    private String code;
    /**
     * 
     * (Required)
     * 
     */
    @JsonProperty("codeSystem")
    @NotNull
    private String codeSystem;
    /**
     * 
     */
    @JsonProperty("codeSystemName")
    private String codeSystemName;
    /**
     * 
     */
    @JsonProperty("codeSystemVersion")
    private String codeSystemVersion;
    /**
     * 
     */
    @JsonProperty("displayName")
    private String displayName;
    /**
     * 
     */
    @JsonProperty("originalText")
    private String originalText;
    @JsonIgnore
    private Map<String, Object> additionalProperties = new HashMap<String, Object>();

    /**
     * 
     * (Required)
     * 
     * @return
     *     The code
     */
    @JsonProperty("code")
    public String getCode() {
        return code;
    }

    /**
     * 
     * (Required)
     * 
     * @param code
     *     The code
     */
    @JsonProperty("code")
    public void setCode(String code) {
        this.code = code;
    }

    public Type withCode(String code) {
        this.code = code;
        return this;
    }

    /**
     * 
     * (Required)
     * 
     * @return
     *     The codeSystem
     */
    @JsonProperty("codeSystem")
    public String getCodeSystem() {
        return codeSystem;
    }

    /**
     * 
     * (Required)
     * 
     * @param codeSystem
     *     The codeSystem
     */
    @JsonProperty("codeSystem")
    public void setCodeSystem(String codeSystem) {
        this.codeSystem = codeSystem;
    }

    public Type withCodeSystem(String codeSystem) {
        this.codeSystem = codeSystem;
        return this;
    }

    /**
     * 
     * @return
     *     The codeSystemName
     */
    @JsonProperty("codeSystemName")
    public String getCodeSystemName() {
        return codeSystemName;
    }

    /**
     * 
     * @param codeSystemName
     *     The codeSystemName
     */
    @JsonProperty("codeSystemName")
    public void setCodeSystemName(String codeSystemName) {
        this.codeSystemName = codeSystemName;
    }

    public Type withCodeSystemName(String codeSystemName) {
        this.codeSystemName = codeSystemName;
        return this;
    }

    /**
     * 
     * @return
     *     The codeSystemVersion
     */
    @JsonProperty("codeSystemVersion")
    public String getCodeSystemVersion() {
        return codeSystemVersion;
    }

    /**
     * 
     * @param codeSystemVersion
     *     The codeSystemVersion
     */
    @JsonProperty("codeSystemVersion")
    public void setCodeSystemVersion(String codeSystemVersion) {
        this.codeSystemVersion = codeSystemVersion;
    }

    public Type withCodeSystemVersion(String codeSystemVersion) {
        this.codeSystemVersion = codeSystemVersion;
        return this;
    }

    /**
     * 
     * @return
     *     The displayName
     */
    @JsonProperty("displayName")
    public String getDisplayName() {
        return displayName;
    }

    /**
     * 
     * @param displayName
     *     The displayName
     */
    @JsonProperty("displayName")
    public void setDisplayName(String displayName) {
        this.displayName = displayName;
    }

    public Type withDisplayName(String displayName) {
        this.displayName = displayName;
        return this;
    }

    /**
     * 
     * @return
     *     The originalText
     */
    @JsonProperty("originalText")
    public String getOriginalText() {
        return originalText;
    }

    /**
     * 
     * @param originalText
     *     The originalText
     */
    @JsonProperty("originalText")
    public void setOriginalText(String originalText) {
        this.originalText = originalText;
    }

    public Type withOriginalText(String originalText) {
        this.originalText = originalText;
        return this;
    }

    @JsonAnyGetter
    public Map<String, Object> getAdditionalProperties() {
        return this.additionalProperties;
    }

    @JsonAnySetter
    public void setAdditionalProperty(String name, Object value) {
        this.additionalProperties.put(name, value);
    }

    public Type withAdditionalProperty(String name, Object value) {
        this.additionalProperties.put(name, value);
        return this;
    }

}
